#ifndef __MESSAGE_H__
#define __MESSAGE_H__
#include"public.h"
#include<string>
#include<sstream>


class Message
{
private:
    std::string m_coloredHeader;//打印到终端，需要颜色
    std::string m_commonHeader;//打印到日志，不需要颜色
    std::string m_msg;//日志消息
    std::string formatFieldWithColor(COLOR_NUMBER colorNumber , bool shadow , const std ::string& delimiter , const std :: string& fieldName ,bool colored);//格式化字段
public:
    Message(LOG_LEVEL level,std::string fileName,const std::string& functionNmae,int lineNumer);
    //[时间戳][日志级别][文件名称][函数名称][行号]
    std::string FormatHeader(LOG_LEVEL level,const std::string& fileName,const std::string& functionNmae,int lineNumber,bool colored);
    std::string ToString(bool colored = true)const;

    template<typename T>
    Message&operator<<(const T&t)//有了运算符重载函数后Message就是一个流了
    {
        std::stringstream ss;
        ss<<t;
        m_msg+=ss.str();
        return *this;
    }
};

#endif 